![]() 視頻解碼方法及電腦可讀媒介
专利摘要:
揭示一種方法以及一儲存對應電腦程式的電腦可讀媒介,用於使用具有動態負載平衡的複數個處理器對一視頻位元流解碼。在本發明的一實施例中,該方法配置該複數個處理器,以透過將該複數個處理模組映射到該複數個處理器,從而執行包含一預測模組的該複數個處理模組。所述複數個處理模組之間使用一個或複數個緩存區佇列,且所述將預測模組映射到該複數個處理器是基於該緩存區佇列的飽和度。該複數個處理器可對應於包含複數個中央處理器(CPU)的一多核CPU或包含複數個數位訊號處理器(DSP)的一多核DSP,以實現本發明。 公开号:TW201320760A 申请号:TW101132206 申请日:2012-09-04 公开日:2013-05-16 发明作者:Ding-Yun Chen;Cheng-Tsai Ho;Chi-Cheng Ju;Chung-Hung Tsai 申请人:Mediatek Inc; IPC主号:H04N19-00
专利说明:
使用多個處理器的視頻解碼的動態負載均衡 本發明涉及視頻解碼系統,特別的,本發明涉及使用具有動態負載均衡的複數個處理器的視頻解碼。 壓縮視頻現已被廣泛用於各種應用中,如視頻廣播、視頻流和視頻儲存。使用較新視頻標準的視訊壓縮技術正變得越來越複雜,並且要求處理能力(processing power)更高。另一方面,相關(underlying)視頻的解析度越來越高,以匹配高清晰度顯示裝置的解析度,從而滿足更高品質的需求。例如,高清(High-Definition,簡稱HD)壓縮視頻正成為一種趨勢。對於HD內容的處理能力要求也隨著該空間(spatial)解析度的提高而提高。因此,對更高解析度的視頻的處理能力成為基於硬體和軟體進行實施的一個具有挑戰性的課題。 為了滿足對高解析度和/或更複雜的編碼標準的計算能力的要求,高速處理器和/或複數個處理器已被用於執行即時視頻解碼。例如,在個人電腦和消費性電子產品的環境中,多核中央處理單元(Central Processing Unit,簡稱CPU)可用於解碼視頻位元流。該多核系統可以是嵌入式系統的一種,以節省成本且更方便。由於視頻編碼的資料依賴性本質,現有的用於單一處理器的單線程軟體並不適用於多核系統。為了提高性能並降低多核系統的成本,基於現有的單線程軟體,平行演算法需要考慮到相關視頻編碼技術的特點。平行演算法設計中遇到的常見問題包含負載均衡、同步開銷(overhead)、記憶體訪問衝突等等。在嵌入式系統中,因為記憶體和頻寬有限,所以通信緩存區的大小也是一個重要的問題。 現有的視頻標準大多數不適合並行處理。通常情況下,資料依賴性存在於不同的處理階段。因此,提出視頻解碼器的幾個平行演算法以避免資料依賴性。例如,在MPEG-2和H.264/AVC標準中,當前宏塊(macroblock,簡稱MB)的運動補償依賴於來自一個或兩個先前處理過的圖片的一個或兩個參考宏塊。此外,在H.264/AVC標準中,幀內預測(Intra-prediction)和運動向量預測(Motion Vector Prediction,簡稱MVP)依賴於相鄰模組。由於受到幀間預測(Inter prediction)和緩存區大小的限制,幀層級分區(frame level partitioning)不適用於嵌入式系統中。開放源軟體FFmpeg支援MPEG-2、MPEG-4和H.264編碼標準,同時還支援片級分區(slice level partitioning)。然而,因為只有MPEG-2標準中定義了每個MB行作為單獨的一片(slice),所以只有FFmpeg中的MPEG-2格式是對於多核系統有用的。而對於其他的視頻標準,例如MPEG-4和H.264,則沒有在一幀內具有複數個片的選擇。大多數普通商用的位元流用於將每個幀作為一個片處理。因此,由於在大多數情況下,一個片相當於一幀,因此片級分區對於多核系統中加速解碼並沒有幫助。此外,基於幀的分區也對於減輕大的緩存要求沒有幫助。 為了獲得多核系統的潛在優勢,最好在一個較小的單元(例如宏塊級的處理)中處理視頻。對於宏塊級分區,系統仍然需要顧及到空間相鄰塊的資料依賴關係,即,左邊、左上角、頂部以及右上角的宏塊。內部存放區可能被用於緩存與空間相鄰塊相關聯的資訊,以獲得頻寬效率和低功耗。由於晶片上的幀記憶體可能會導致成本大大增加,因此與幀間預測相關的參考圖像緩存區仍然是必要的。不過,視頻解碼器的平行演算法設計仍需要挑戰宏塊級處理的資料依賴性。 如圖1所示,其為H.264解碼器的一個示例性的系統框圖。該視頻流首先由熵解碼器(entropy decoder)或可變長度解碼器110(variable length decoder,簡稱VLD)處理,以恢復編碼符號。該熵解碼器110還可以包含位元流解析器以提取各種處理模組的相應資訊。例如,提取該空間預測模式和相關聯的資訊並提供給幀內預測器160,以及提取運動向量和模式資訊並提供給運動補償器(motion compensation,簡稱MC)170。該編碼殘餘(residue)資訊被提供給逆量化器(Inverse Quantization,簡稱IQ)120,並進一步由逆變換器(Inverse Transform,IT)130處理。從IT 130恢復的殘餘(residues)與選自幀內預測器160和MC 170的預測器相結合,以形成重建的視頻資料。幀內預測器160和MC 170之間的切換由開關190控制,該開關190基於相關視頻資料是否在幀內模式或幀間模式處理進行控制。重建的視頻資料進一步透過一個環路濾波器(即去塊濾波器150)處理,以增強視覺品質。該去塊視頻資料儲存在參考圖像緩存器180中以進行隨後的視頻資料的運動補償。圖1的該H.264解碼器系統也可以使用不同方式配置。 在圖2所示的一個單核系統中,該解碼過程可以使用單線程閾值軟體實現。該解碼過程被劃分成複數個處理模組,包含VLD 220、IQ/IT 230、PRED(Prediction,預測)240和DBK 250。該PRED 240用於圖1的幀內預測器160和運動補償器170。正如前面所提到的,輸入位元流210和參考圖像270所需的緩存器通常是尺寸可變的且是晶片外(off-chip)記憶體,以用來降低晶片成本。當前宏塊的去塊處理(DBK 250)也依賴於相鄰的宏塊。如圖2所示,輸出緩存區260用於儲存解碼後的視頻幀,以在解碼後將該視頻幀顯示在螢幕上。雖然圖2顯示的是單獨的緩存區,但是這些緩存區可以合併,從而僅使用一個儲存裝置。 各種平行演算法可分為三大類:功能分區、資料分區和混合分區。功能分區以管線型的方式提取每個線程以作為一個不同的功能,並且以一個特定的方式在複數個任務之間通信。每個函數被分解成任務,這些任務可以在一個多處理器系統上並行執行。該資料分區使用不同的線程以同時執行輸入資料不同部分的相同功能。混合分區結合該功能分區和資料分區,並在粗粒度(coarse granularity)上對功能並行處理,以及在該粒度中應用該些資料並行。在嵌入式系統中,資料分區和混合分區的主要問題是通信緩存區的大小。資料分區需要具有相應於兩個完整的幀大小的VLD緩存區,而混合分區需要一個VLD緩存區和具有相應於三個完整的幀大小的預測緩存區。根據Van der Tol等人所著的非專利文獻(作者:E.B.van der Tol,E.G.T.Jaspers,and R.H.Gelderblom,題為:“在一個複數個處理器架構上的H.264解碼映射(Mapping of H.264 decoding on a multiprocessor architecture)”,Proc.of the SPIE,第5022欄,第707-718頁,2003年5月),以及由Meenderinck等人所著的非專利文獻(作者:C.Meenderinck,A.Azevedo,M.Alvarez,B.Juurlink and A.Ramirez,題為:“H.264的並行可擴展性(Parallel Scalability of H.264)”,Proc.of workshop on Programmability Issues for Multicore Computers(簡稱MULTIPROG),2008年1月),其討論了資料分區對於緩存區的要求。在Nishihara等人所著的非專利文獻(作者:K.Nishihara,A.Hatabu and T.Moriyoshi,題為:“用於嵌入式多核處理器的H.264視頻解碼器的並行(Parallelization of H.264 video decoder for embedded multicore processor)”,Proc.of IEEE Intl.Conf.on Multimedia and Expo(ICME),第329-332頁,2008年4月),和Sihn等人所著的非專利文獻(作者:K.-H.Sihn,H.Baik,J.-T.Kim,S.Bae and H.J.Song,“對稱多核系統上的並行H.264解碼器的新方法(Novel approaches to parallel H.264 decoder on symmetric multicore systems)”,Proc.of IEEE Intl.Conf.on Acoustics,Speech and Signal Processing(ICASSP),第2017-2020頁,2009年4月)中,討論了混合分區對於緩存區的要求。 對於功能分區,Seitner等人在兩篇獨立的非專利文獻(作者:F.H.Seitner,R.M.Schreier,M.Bleyer and M.Gelautz,題為“一種對於H.264解碼器的動態行為的宏塊級分析(A macroblock-level analysis on the dynamic behaviour of an H.264 decoder)”,Proc.of IEEE Intl.Symp.on Consumer Electronics(ISCE),第1-5頁,2007年6月;以及作者:F.H.Seitner,M.Bleyer,M.Gelautz,R.M.Beuschel,題為:“高級別模擬方法的發展及其在多核視頻解碼中的應用(Development of a High-Level Simulation Approach and Its Application to Multicore Video Decoding)”,IEEE Trans.on Circuits and Systems for Video Technology,第19卷,第11期,第1667-1679頁,2009年11月)中,提出了一種將視頻解碼器的功能分區成用於雙核環境的一解析部分和一重建部分的方法。Seitner等人也提出一個高級(high level)模擬以估計性能。Y.Kim等人(作者:Y.Kim,J.-T.Kim,S.Bae,H.Baik and H.J.Song,題為:“具有動態負載均衡功能分區的嵌入式雙核的H.264解碼器(H.264 decoder on embedded dual core with dynamically load-balanced functional partitioning)”,Proc.of IEEE Intl.Conf.on Multimedia and Expo(ICME),第1001-1004頁,2008年4月)提出了在功能分區中的動態負載均衡,如果前一個宏塊工作在一個雙向(bi-directional)幀間預測模式,則該功能分區將運動補償的負載放到另一個內核中。然而,其流水線結構要求四分之一框架緩存區的大小。M.Kim等人(作者:M.Kim,J.Song,D.Kim and S.Lee,題為:“具有動態負載均衡功能分區的嵌入式雙核的H.264解碼器(H.264 decoder on embedded dual core with dynamically load-balanced functional partitioning)”,Proc.of IEEE Intl.Conf.on Image Processing(ICIP),第3749-3752頁,2010年9月)披露了一個基於雙核DSP的用於功能分區的動態負載均衡方法。該系統包含一個雙核DSP、VLD硬體、MC硬體、去塊硬體和SDRA M。該雙核DSP僅處理一些選定的視頻解碼器流的一部分。因此,需要開發更完備的基於功能分區的方案,以進一步提高性能並降低緩存要求。 揭示一種方法及儲存一電腦程式的電腦可讀媒介,用於使用具有動態負載平衡的多個處理器對一視頻位元流解碼。在本發明一實施例中,該方法配置複數個處理器以透過將該複數個處理模組映射到該複數個處理器,從而執行包含一預測模組的該複數個處理模組。所述複數個處理模組之間使用一個或複數個緩存區佇列,且所述將預測模組映射到該複數個處理器是基於該緩存區佇列的飽和度。在一實施例中,將預測模組映射到所述複數個處理器是基於所述一個或複數個緩存區佇列的不同等級的。該預測模組包含一幀內預測子模組、一幀間預測子模組、運動向量判斷、以及幀內模式判斷。由該預測模組處理後的輸出資料儲存在所述一個或複數個緩存區佇列中。所述解碼該視頻位元流是在一宏塊基礎上執行的。在這種情況下,如果該複數個處理模組進一步包含一可變長度解碼器(variable Length Decoder,簡稱VLD)模組,則預測模組的運動向量判斷以及幀內模式判斷以及關聯於每個宏塊的VLD模組是在所述複數個處理器中的同一個處理器執行。當該複數個處理模組包含一去塊模組以用於對經由該預測模組處理過的視頻資料執行去塊處理,且該預測模組的幀內預測參考在去塊處理之前由該預測模組處理的每個宏塊之上的視頻資料,則根據一實施例,該去塊模組對每一個宏塊的處理至少比預測模組遲一個宏塊行。在另一實施例中,不是將該去塊處理進行延遲,而是將由該預測模組處理的先前像素在該去塊模組執行於每個宏塊之前進行備份,且其中,該先前像素包含在先宏塊的底部像素,以及該在先宏塊的數量是至少一個宏塊行。為了提高處理效率,如果一個幀內宏塊被分配到所述複數個處理器的其中一個,則處於同一個宏塊行中的所述幀內宏塊的全部後續宏塊被分配到同一個處理器。本發明的一方面將系統組態處理為支援動態負載均衡。在一實施例中,所述複數個處理器可以基於複數個負載配置,其中,基於所述一個或複數個緩存區佇列的飽和度,在所述複數個負載配置之間進行切換。該複數個處理器可對應於包含複數個中央處理器(CPU)的一多核CPU或包含複數個數位訊號處理器(DSP)的一多核DSP,以實現本發明。 在本發明的一個實施例中,視頻解碼流被分為:一熵解碼模組(entropy decoding module,簡稱VLD)、一逆量化/變換模組(inverse quantization/transformation module,簡稱IQ/IT)、一預測模組(prediction module,簡稱PRED)和一去塊模組(deblocking module,簡稱DBK)。雖然在其中一個實施例中,該解碼過程分為四個處理模組(也被稱為任務),但是該解碼過程也可以被分為其他的處理模組。一雙核系統被用作一個用於具有動態負載均衡的並行處理的複數個處理器的一實施例。然而,本發明並不限定於使用兩個處理器。本領域技術人員可以使用包含兩個以上的處理器的一多核處理器來實施本發明。圖3A-3C顯示了支援動態負載均衡的系統組態的實施例,其中,功能分區的三種配置用來說明該動態負載均衡的操作。圖3A示出了第一配置,其中VLD 320被分配到CPU 0,而IQ/IT 330、PRED 340和DBK 350由CPU 1執行。除了位元流緩存區310和參考圖像緩存區370,還需要儲存來自VLD 320的輸出。因此,圖3A中使用了VLD緩存區380。此外,圖3A示出了該輸出緩存區360是用來儲存該去塊的視頻幀,以將該視頻幀顯示在螢幕上。圖3B示出了第二配置,其中,VLD 320和IQ/IT 330使用CPU 0執行,而PRED 340和DBK 350使用CPU 1執行。由於需要儲存來自IQ/IT 330的輸出,因此,圖3B中使用IQ/IT緩存區390。圖3C表示第三配置,其中,VLD 320、IQ/IT 330、PRED 340使用CPU 0執行,而DBK 350由CPU 1執行。所述三種配置的每一個在CPU 0和CPU 1之間具有不同的負載分擔。對於CPU 0,第一配置具有最低的負載而第三配置具有最高的負載。在另一方面,對於CPU 1,第一配置具有最高的負載而第三配置具有最低的負載。本發明還可以使用多於或少於三個的功能分區配置來實現。雖然上面的例子是基於多核CPU來實現,然而,也可以使用多核DSP來實現本發明。此外,本發明也適用於包含一個或複數個CPU內核和一個或複數個DSP內核的一多核處理器。 在圖3A-3C所示的任何一個固定配置中,每個模組的執行時間可能會根據相關視頻資料的相關編碼處理(underlying coding process)和特徵而波動。例如,對於更高的位元速率或具有更多殘餘信號的宏塊(macroblock,簡稱MB),該VLD模組和IQ模組可能需要更多的處理時間。此外,該PRED模組通常需要比處理一P-圖像/P-片中的該幀間編碼宏塊或該幀內編碼宏塊更多的時間來處理B-圖像/B-片中的幀間編碼宏塊。該固定功能分區會遇到不同的內核之間負載不均衡的問題。因此,每種配置可能會導致一個特定的CPU花費比即時處理所允許的更多的處理時間。本發明的動態負載均衡能夠提高整個系統的效率,並相應降低處理器超載的可能性(即,處理器消耗比即時處理所允許的更多的時間)。 動態負載均衡是一種可以透過自我調整地改變負載配置而緩解負載不均衡問題的技術。例如,Y.Kim等人(Y.Kim,J.-T.Kim,S.Bae,H.Baik and H.J.Song,“具有動態負載均衡功能分區的嵌入式雙核的H.264解碼器”,Proc.of IEEE Intl.Conf.on Multimedia and Expo(ICME),第1001-1004頁,2008年4月)披露了一種動態負載均衡方法,在該方法中,如果當前模組是一個平均模組,則在複數個處理器間劃分下一個模組的任務以進行負載均衡。這種簡單的方法已經顯示能夠在單一處理器上提高複數個處理器的性能。在另一個例子中,M.Kim等人(M.Kim,J.Song,D.Kim and S.Lee,“具有動態負載均衡功能分區的嵌入式雙核的H.264解碼器”,Proc.of IEEE Intl.Conf.on Image Processing(ICIP),第3749-3752頁,2010年9月)披露了一種透過檢查緩存區飽和度(buffer level)而進行的動態負載均衡方法。如果緩存區飽和度高於閾值,則第一處理器設置一負載均衡標誌。如果該負載均衡標誌已經設置,則該第一處理器將執行一個或複數個額外的任務,以分擔最初由第二處理器執行的處理。如果該宏塊是一個內部MB(Intra-MB),則該第一處理器將為所述第二處理器執行所述額外的IQ/IT。如果該宏塊不是一個內部MB,則所述第一處理器將為所述第二處理器執行額外的邊界強度(Boundary Strength,簡稱BS)計算。在M.Kim等人揭露的上述多處理器系統中,採用了專門用於運動補償(motion compensation,簡稱MC)的硬體加速器(hardware accelerator,簡稱HWA)。然而,該HWA會增加晶片成本,並且這種HWA不適用於多核CPU環境中。在本發明的實施例中,其基於不使用HWA而進行MC的多核CPU、多核DSP或兩者的混合,採用動態負載均衡來實現低成本的視頻解碼器。對於圖3A-3C中的負載配置,本發明的實施例可根據佇列飽和度(queue level)指定CPU 0來動態地選擇所述三個負載配置中的一個以用於每個宏塊。如果佇列飽和度是低或空,就意味著CPU 1可以快速地完成其任務。因此,CPU 0可透過發送相關的視頻資料以及使用與CPU 1將要執行的任務相關的一個標誌指示到CPU 1,從而讓CPU 1分擔更多的負載。在另一方面,如果佇列飽和度為高,CPU 0可以透過發送相關聯的視頻資料並使用一與已經由CPU 0執行過的任務相關的標誌指示到CPU 1,從而為CPU 1分擔一些任務。 因為該宏塊是用於各種編碼過程的一個單元,並具有用於調節負載的小粒度,所以從CPU 0傳遞到CPU 1的視頻資料可以是基於宏塊的。因此,儲存在緩存區佇列中的視頻資料可以是基於宏塊的。基於該多核CPU或處理器中的複數個內核的數量以及該負載配置,可以使用一個或複數個緩存區佇列(buffer queue)。根據本發明,每個緩存區佇列包含一系列的緩存區佇列分區(buffer queue slots),每個緩存區佇列分區包含與一宏塊相關聯的一標誌、宏塊標題資訊和資料。該標誌可以被用來指示對應宏塊資料的處理狀態。例如,該標誌可以指示在CPU 0的輸出端的相關宏塊是分別由圖3A-3C中的VLD、VLD+IQ/IT或VLD+IQ/IT+PRED處理的。接著,CPU 1讀取該標誌以確定什麼任務或複數個任務已被CPU 0施加到相關宏塊中。根據該標誌,CPU 1將IQ/IT+PRED+DBK、PRED+DBK或DBK分別應用到該宏塊中。為了在兩個內核之間同步該佇列飽和度,從該宏塊索引中計算出該佇列索引,且該佇列飽和度由信號量(semaphores)同步。在圖3A至圖3C中,來自PRED 340的輸出被傳遞給DBK 350以進一步處理。在另一實施例中,來自PRED 340的輸出也可以被直接寫入到輸出緩存區360中。在這種情況下,DBK 350可以從輸出緩存區360讀取輸入。圖3A至圖3C的代替實施例分別顯示在圖3D至圖3F中。 圖4A示出了本發明提供的使用雙核CPU的動態負載均衡的一實施例。CPU 0根據互通(intercommunication)緩存區450的佇列飽和度,從所述三個負載配置410、412和414中選擇一個。互通緩存區450的每個分區包含一個標誌S和相應的宏塊資料。CPU 0使用該佇列飽和度進行負載均衡,例如,為每個宏塊動態選擇該三個負載配置中的一個。如圖4A中所示,由CPU 0執行負載配置選擇任務430。在CPU 1一側,則根據標誌S從該三個負載配置420、422和424中選擇一個相應的負載配置。該DBK任務440總是由CPU 1執行。輸出緩存區460用於儲存來自DBK 440的解碼/去塊後的視頻幀,以將該視頻幀顯示在顯示幕幕上。圖4A所示的系統還使用晶片外記憶體(off-chip memory),以支援位元流緩存區470和參考圖像緩存區480。同樣,還可以使用另一種實施例,即:讓PRED任務將輸出直接寫入到輸出緩存區460。當PRED任務由CPU 0(即,分支414)執行時,如圖4B中帶箭頭的線416所示,從分支414的PRED輸出的宏塊資料將直接被寫入到輸出緩存區460。標誌S和宏塊標題資訊仍會儲存在互通緩存區450的佇列中,以與CPU 1協調任務。 圖4A和圖4B中的互通緩存區450的佇列大小應該小於一個宏塊行(macroblock row)的大小,從而無需檢查資料依賴性而減少同步的開銷(overhead)。否則,CPU 0和CPU 1必須與互通緩存區450的訪問同步。因此,一個較小的佇列大小(如一個宏塊行的一半)可以確保當佇列可存入或取出時,左上角、頂部和右上角的宏塊已經完成。小佇列的另一個優點是,可以減少外部記憶體的頻寬和延遲時間,這在嵌入式系統中尤其重要。作為一個實施例,用於720p的解碼器的該佇列大小可以是32個宏塊。 對於H.264標準,運動向量預測的技術被用來進一步減少與運動向量相關聯的位元速率。一當前宏塊的運動向量可以基於相鄰宏塊的已解碼的運動向量和承載於位元流中的運動向量差(motion vector difference,簡稱MVD)進行恢復。對於幀內預測,在一當前塊中的像素重建取決於當前宏塊的上邊界以上和左邊界左邊的相鄰像素。如果在PRED模組中執行該MVD和幀內模式預測,則該VLD必須等待PRED模組先完成。在本發明的一個實施例中,運動向量預測和幀內模式預測與VLD被同時進行計算,從而無需等待PRED完成,即可執行VLD。 在H.264標準中,幀內預測需要在DBK處理之前參考宏塊上行的PRED處理結果。圖5A為DBK的一個實施例,其中該DBK過程總是由一個宏塊行延遲。圖5A中的每個小正方形表示一個宏塊。交叉線覆蓋的方格區域510表示已由DBK處理的宏塊,斜行覆蓋的方格區域520表示由PRED處理的宏塊。對於圖5A中標記為“X”的當前宏塊,所述PRED處理過程需要參考來自當前宏塊“X”上方以及左邊的該PRED處理過的(即,DBK之前)宏塊的像素。根據本發明一實施例,該DBK處理過程被關於該PRED處理的一個或複數個宏塊行延遲。換言之,緩存區佇列將保持對應於一個或更多宏塊行值(worth)的且經PRED處理後的資料(即,DBK之前資料),使得左邊的PRED處理後的宏塊和上方的宏塊可用於當前宏塊X的PRED操作。在圖5A的實施例中,當前宏塊上方的宏塊至當前塊的左邊的宏塊均被延遲。一個宏塊行的值(worth)資料可以包含圖片的寬度。圖5B為本發明提供的用於高效執行幀內預測和DBK的另一實施例。像素緩存區560用於儲存在先(preceding)宏塊的每個宏塊底行的經PRED處理後的資料,該在先宏塊對應於少一個或複數個宏塊的宏塊行。在圖5B中,交叉線覆蓋的方格區域540表示由DBK處理的宏塊,而斜行覆蓋的方格區域550表示由PRED處理的宏塊。該當前宏塊X可以由PRED使用儲存在像素緩存區560中的上方宏塊的PRED處理後的資料以及在左邊的PRED處理後的資料(即,宏塊550)進行處理。宏塊(即從當前宏塊的上方的宏塊至左邊宏塊550的在先的宏塊)的底行在像素緩存區560中進行緩存。由於當前宏塊的PRED處理也需要參考左邊的宏塊550,PRED處理過的左邊宏塊550可以儲存在一緩存區中,直到完成對當前宏塊的PRED處理為止。因此,直到當前宏塊被PRED處理過,該左邊宏塊550的底行才需要儲存在像素緩存區560中。因此,像素緩存區560必須為對應於少一個或複數個宏塊的宏塊行的在先宏塊儲存每個宏塊的底行。在所述當前宏塊被PRED處理後,左邊的宏塊已經準備好進行DBK處理。在圖5B所示的實施例中,該DBK過程可以相對於該PRED過程延遲一個宏塊。在本發明的又一個實施例中,像素緩存區580可被用於儲存圖5C所示的左邊的PRED處理後的資料。因此,無需延遲該DBK過程。另外,在圖5C中,區域570表示去塊的宏塊。 由於幀內預測也需要參考左邊宏塊的PRED結果,在一實施例中,需配置該負載以確保左邊宏塊的PRED處理是在同一線程中執行。如果CPU 0是對幀內宏塊執行PRED,而後續的幀內宏塊被傳送到CPU 1執行PRED,則可能會導致一些問題。例如,當CPU 0將幀內宏塊的PRED轉移到CPU 1,就意味著左邊的宏塊的PRED已經由CPU 1完成。如此,CPU 1中的當前宏塊的PRED可以參考來自左方宏塊的正確的像素。然而,在轉移到CPU 1之後,幀內宏塊的PRED不可以再轉回到CPU 0,因為CPU 0不知道CPU 1是否已經完成左邊宏塊的PRED。根據本發明的一個實施例,一旦CPU 0將當前幀內宏塊的PRED處理分配到CPU 1,同一個宏塊行的後續幀內宏塊的PRED處理也將被分配到CPU 1。如果後續宏塊是處於幀間模式,則宏塊可以被分配到相同的CPU或不同的CPU中。 如前所述,本發明的實施例揭示了根據互通緩存區的佇列飽和度而動態調整複數個處理器之間的負載。圖4A和圖4B中所示的負載配置選擇任務430可以用於動態調整複數個處理器之間的負載。例如,可以使用一個或複數個閾值等級來判斷用於該複數個處理器的負載配置。圖6A表示採用兩個閾值等級選擇該三個負載配置中的一個以用於幀間宏塊的實施例。其中,該互通緩存區610的佇列飽和度620被讀取。兩個閾值THR1 622和THR2 624被選定。如果佇列飽和度是低,意味著CPU 1可以迅速地處理該任務。因此,CPU 0可以將更多的任務分擔到CPU 1中。因此,根據本發明的一個實施例中,如果佇列飽和度620低於THR1 622,則CPU 0將對一相關宏塊只執行VLD處理,並讓CPU 1執行IQ/IT、PRED和DBK任務。因此,負載配置選擇430將會選擇負載配置410。如果佇列飽和度620是高於THR1 622但低於THR2 624,則CPU 0將執行VLD和IQ/IT任務,並讓CPU 1執行PRED和DBK任務。因此,負載配置選擇430選擇負載配置412。如果佇列飽和度620高於THR2 624,則CPU 0將執行VLD、IQ/IT和PRED任務,並讓CPU 1僅執行DBK任務。因此,負載配置選擇430選擇負載配置414。當然,可以適當地設計閾值THR1 622和THR2 624以實現高效率。例如,THR1 622可以設置為1/3,THR2 624可以設置為2/3。當然,其它閾值也可用於實現本發明。 對於幀內宏塊,其閾值是不同於幀間宏塊的閾值的。例如,如圖6B所示,幀內宏塊的兩個閾值THR1 632和THR2 634可以被分別設置為1/3、1/2。正如前面提到的,在本發明的一實施例中,一旦CPU 0將當前幀內宏塊的PRED處理分配到CPU 1,則相同宏塊行的後續幀內宏塊的PRED處理也將被分配到CPU 1。在這種情況下,負載配置選擇430只需要在兩個CPU之間分配VLD和IQ/IT任務。圖6C示出了這種情況下的負載配置的實施例,其中,單一的閾值THR1 642就可用來確定負載配置。因此,如果佇列飽和度640低於THR1 642,則CPU 0將對一個相關宏塊執行VLD處理,並讓CPU 1執行IQ/IT、PRED及DBK任務。如果後續的宏塊是在幀間模式,則宏塊可以被分配給相同的CPU或不同的CPU。如果佇列飽和度640是高於THR1 642,則CPU 0將執行VLD和IQ/IT任務,並讓CPU 1執行PRED和DBK任務。在本發明的另一個實施例中,幀內宏塊和幀內間宏塊的閾值可以是相同的。例如,圖6A中的幀間宏塊的閾值624和圖6B中的幀內宏塊的閾值634可以是相同的。 為了評估本發明的一實施例的多核系統的性能,使用了基於多核硬體模擬環境的性能評估。該模擬環境用於一雙核處理器。該線程操作和同步是基於Linux的Posix線程(POSIX threads,又稱Pthreads)應用程式程式介面(Application Programming Interface,API),包含pthread_xxx(),sem_xxx(),pthread_mutex_xxx()函數。 該解碼軟體用於支援具有上下文自我調整二進位算術編碼(Context-adaptive binary arithmetic coding,簡稱CABAC)的H.264高調(high profile)位元流。總共使用20個測試位元流,並且該位元流對應於解析度為1280*720像素且每位元流平均為166幀的視頻。 圖7顯示了一個單一處理器、具有固定負載配置的一個雙核處理器、以及根據本發明的一實施例的具有動態負載均衡的一個雙核處理器之間的性能比較。對於一個普通的位元流,對應於圖3A-3C的該三個固定的功能分區的性能(每幅畫面的執行時間)分別由相應的曲線720-740表示。與單一處理器系統(曲線710)相比,對應圖3A-3C的平均加速因數分別是1.34、1.28和1.37倍。另一方面,本發明的具有動態負載均衡的雙核系統(曲線750)的平均加速因數是1.73倍,這比任何固定負載配置都要更好。 圖8顯示所有20個測試例中的平均(曲線810)、最小(曲線820)和最大(曲線830)的加速比。所有測試例子的平均加速比是1.74倍。所有測試幀之間的最小加速比為1.49倍。對這些幀進一步分析後發現,這些在該序列開頭的幀是屬於非常簡單的內容。圖9表明對應於一個單一處理器系統(曲線910)和具有本發明一實施例的該動態負載均衡的該雙核系統(曲線920)的序列的執行時間。如圖9所示,前幾幀的執行時間是非常短的。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。 110‧‧‧熵解碼器 120‧‧‧逆量化器 130‧‧‧逆變換器 150‧‧‧去塊濾波器 160‧‧‧幀內預測器 170‧‧‧運動補償器 180‧‧‧參考圖像緩存器 190‧‧‧開關 210、310、470‧‧‧位元流緩存區 220、320‧‧‧VLD 230、330‧‧‧IQ/IT 240、340‧‧‧PRED 250、350‧‧‧DBK 260、360‧‧‧輸出緩存區 270、370、480‧‧‧參考圖像緩存區 380‧‧‧VLD緩存區 390‧‧‧IQ/IT緩存區 410、412、414、420、422、424‧‧‧負載配置 416‧‧‧線 430‧‧‧負載配置選擇任務 440‧‧‧DBK任務 450‧‧‧互通緩存區 460‧‧‧輸出緩存區 510、520、540、550、570‧‧‧區域 560、580‧‧‧像素緩存區 620、640‧‧‧佇列飽和度 622、624、632、634、642‧‧‧閾值 710、720、730、740、750、810、820、830、910、920‧‧‧曲線 圖1為H.264視頻解碼系統的一實施例,其整合各種視頻解碼任務。 圖2為基於單核CPU的H.264解碼的單線程實現方式的一實施例。 圖3A-3C為本發明提供的使用雙核CPU的具有固定負載配置的三種實施例。 圖3D-3F為分別對應於圖3A-3C中三個實施例的三個替換實施例,其中PRED的輸出直接被寫入到輸出緩存區中。 圖4A為本發明一實施例提供的使用雙核CPU的動態負載均衡。 圖4B為本發明另一實施例提供的使用雙核CPU的動態負載均衡,其中,CPU 0和CPU 1中的PRED的輸出被直接寫入到輸出緩存區中。 圖5A是與幀內預測和去塊相關的解碼過程的實施例,其中,去塊過程由相對於該幀內預測處理的一個宏塊行進行延遲。 圖5B是與幀內預測和去塊相關的解碼過程的實施例,其中,採用像素線緩存區且去塊過程由關於該幀內預測處理的一個宏塊進行延遲。 圖5C是與幀內預測和去塊相關的解碼過程的實施例,其中,採用位於左方的PRED處理過的宏塊的像素緩存區,且去塊處理過程中不需要延遲。 圖6A示出了用於幀間宏塊的動態負載均衡的閾值的實施例。 圖6B示出了用於幀內宏塊的動態負載均衡的閾值的實施例。 圖6C示出了用於幀內宏塊的動態負載均衡的閾值的實施例,其中幀內預測總是由該第二同一個CPU執行。 圖7為本發明一實施例提供的單一處理器系統、具有固定的負載配置的三個雙核系統和具有動態負載均衡的雙核系統在執行時間方面的性能比較。 圖8為本發明一實施例提供的用於20個測試例子的具有動態負載均衡的雙核系統的最小、平均和最大加速比。 圖9為本發明一實施例提供的單一處理器系統和具有動態負載均衡的雙核系統在執行時間方面的性能比較,用於在序列的開頭包含有簡單內容的測試例子。 410、412、414、420、422、424‧‧‧負載配置 430‧‧‧負載配置選擇任務 440‧‧‧DBK任務 450‧‧‧互通緩存區 460‧‧‧輸出緩存區 470‧‧‧位元流緩存區 480‧‧‧參考圖像緩存區
权利要求:
Claims (26) [1] 一種具有動態負載均衡的使用複數個處理器的視頻解碼方法,該方法包含:確定與解碼一視頻位元流相關聯的複數個處理模組,其中該複數個處理模組包含一預測模組;設置該複數個處理器,以透過將該複數個處理模組映射到所述複數個處理器中而執行該複數個處理模組,其中在所述複數個處理模組之間使用一個或複數個緩存區佇列;以及其中,基於所述一個或複數個緩存區佇列的飽和度,將該預測模組映射到所述複數個處理器。 [2] 如申請專利範圍第1項所述的方法,其中,該預測模組包含一幀內預測子模組、一幀間預測子模組、運動向量確定、以及幀內模式確定。 [3] 如申請專利範圍第2項所述的方法,其中,所述將預測模組映射到所述複數個處理器係基於所述一個或複數個緩存區佇列的不同的飽和度。 [4] 如申請專利範圍第1項所述的方法,其中,由該預測模組處理後的輸出資料儲存在所述一個或複數個緩存區佇列中。 [5] 如申請專利範圍第1項所述的方法,其中,所述解碼該視頻位元流的步驟是在一宏塊基礎上執行的。 [6] 如申請專利範圍第5項所述的方法,其中,該複數個處理模組包含一可變長度解碼器(VLD)模組,其中,預測模組的運動向量確定、幀內模式確定以及關聯於每個宏塊的VLD模組在所述複數個處理器中的同一個處理器執行。 [7] 如申請專利範圍第5項所述的方法,其中,該複數個處理模組包含一去塊模組,用於對經由該預測模組處理過的視頻資料執行去塊處理,其中,該預測模組的幀內預測參考在去塊處理之前由該預測模組處理的每個宏塊之上方的視頻資料,且該去塊模組由至少一個宏塊在預測模組之後的每個宏塊中執行。 [8] 如申請專利範圍第5項所述的方法,其中,該複數個處理模組包含一去塊模組,用於對經由該預測模組處理過的視頻資料執行去塊處理,其中,該預測模組的幀內預測參考在去塊處理之前由該預測模組處理的每個宏塊之上的視頻資料,其中,由該預測模組處理的先前像素在該去塊模組執行於每個宏塊之前進行備份,且該先前像素包含在先宏塊的底部像素,並且該在先宏塊的數量是至少一個宏塊行。 [9] 如申請專利範圍第5項所述的方法,其中,如果一個幀內宏塊被分配到所述複數個處理器的其中一個,則處於同一個宏塊行中的所述幀內宏塊的全部後續宏塊被分配到所述其中一個處理器。 [10] 如申請專利範圍第5項所述的方法,其中,所述將複數個處理模組映射到所述複數個處理器是基於複數個負載配置的,其中,基於所述一個或複數個緩存區佇列的飽和度,在所述複數個負載配置之間進行切換。 [11] 如申請專利範圍第10項所述的方法,其中,所述複數個負載配置包含一第一負載配置、一第二負載配置以及一第三負載配置,其中,該第一負載配置將一個可變長度編碼器(VLD)模組分配到一個處理器中,該第二負載配置將該VLD模組、一逆量化(IQ)模組以及一逆變換(IT)模組分配到所述處理器中,該第三負載配置將該VLD模組、IQ模組、IT模組以及預測模組分配到所述處理器。 [12] 如申請專利範圍第1項所述的方法,其中,所述複數個處理器對應於包含複數個中央處理器(CPU)的一CPU或包含複數個數位訊號處理器(DSP)的一多核DSP。 [13] 如申請專利範圍第1項所述的方法,其中,該多個處理模組包括一可逆量化(IQ)模組以及一可逆轉換(IT)模組。 [14] 一種電腦可讀媒介,用於儲存一電腦程式以使用具有動態負載平衡的多個處理器對一視頻位元流解碼,該電腦程式包含一組指令用於:確定與解碼一視頻位元流相關聯的複數個處理模組,其中該複數個處理模組包含一預測模組;設置該複數個處理器,以透過將該複數個處理模組映射到所述複數個處理器中而執行該複數個處理模組,其中在所述複數個處理模組之間使用一個或複數個緩存區佇列;以及其中,基於所述一個或複數個緩存區佇列的飽和度,將該預測模組映射到所述複數個處理器中。 [15] 如申請專利範圍第14項所述的電腦可讀媒介,其中,該預測模組包含一幀內預測子模組、一幀間預測子模組、運動向量確定、以及幀內模式確定。 [16] 如申請專利範圍第15項所述的電腦可讀媒介,其特徵在於,所述將預測模組映射到所述多個處理器是基於所述一個或多個緩存區佇列的不同飽和度的。 [17] 如申請專利範圍第14項所述的電腦可讀媒介,其中,由該預測模組處理後的輸出資料儲存在所述一個或複數個緩存區佇列中。 [18] 如申請專利範圍第14項所述的電腦可讀媒介,其中,所述解碼該視頻位元流的步驟是在一宏塊基礎上執行的。 [19] 如申請專利範圍第18項所述的電腦可讀媒介,其中,所述解碼該視頻位元流的步驟是在一宏塊基礎上執行的,且該複數個處理模組包含一可變長度解碼器(VLD)模組,該VLD模組與每個宏塊相關聯,其中,預測模組的運動向量判斷以及幀內模式判斷以及關聯於每個宏塊的VLD模組是在所述複數個處理器中的同一個處理器執行的。 [20] 如申請專利範圍第18項所述的電腦可讀媒介,其中,該複數個處理模組包含一去塊模組,用於對經由該預測模組處理過的視頻資料執行去塊處理,其中,該預測模組的幀內預測參考在去塊處理之前由該預測模組處理的每個宏塊之上的視頻資料,且該去塊模組由至少一個宏塊在預測模組之後的每個宏塊中執行。 [21] 如申請專利範圍第18項所述的電腦可讀媒介,其中,該複數個處理模組包含一去塊模組,用於對經由該預測模組處理過的視頻資料執行去塊處理,其中,該預測模組的幀內預測參考在去塊處理之前由該預測模組處理的每個宏塊之上的視頻資料,其中,由該預測模組處理的先前像素在該去塊模組執行於每個宏塊之前進行備份,且該先前像素包含在先宏塊的底部像素,並且該在先宏塊的數量是至少一個宏塊行。 [22] 如申請專利範圍第18項所述的電腦可讀媒介,其中,如果一個幀內宏塊被分配到所述多個處理器的其中一個,則處於同一個宏塊行中的所述幀內宏塊的全部後續宏塊被分配到所述其中一個處理器。 [23] 如申請專利範圍第14項所述的電腦可讀媒介,其中,所述將複數個處理模組映射到所述複數個處理器是基於複數個負載配置的,其中,基於所述一個或複數個緩存區佇列的飽和度,在所述複數個負載配置之間進行切換。 [24] 如申請專利範圍第23項所述的電腦可讀媒介,其中,所述複數個負載配置包含一第一負載配置、一第二負載配置以及一第三負載配置,其中,該第一負載配置將一個可變長度編碼器(VLD)模組分配到一個處理器中,該第二負載配置將該VLD模組、一逆量化(IQ)模組以及一逆變換(IT)模組分配到所述處理器中,該第三負載配置將該VLD模組、IQ模組、IT模組以及預測模組分配到所述處理器。 [25] 如申請專利範圍第14項所述的電腦可讀媒介,其中,所述多個處理器對應於包括多個中央處理器(CPU)的一CPU或包含多個數位訊號處理器(DSP)的一多核DSP。 [26] 如申請專利範圍第14項所述的電腦可讀媒介,其中,該多個處理模組包括一可逆量化(IQ)模組以及一可逆轉換(IT)模組。
类似技术:
公开号 | 公开日 | 专利标题 TWI512673B|2015-12-11|視頻解碼方法及電腦可讀媒介 US9161034B2|2015-10-13|Scalable multi-thread video decoding Chi et al.2012|Parallel scalability and efficiency of HEVC parallelization approaches US8000388B2|2011-08-16|Parallel processing apparatus for video compression US8218640B2|2012-07-10|Picture decoding using same-picture reference for pixel reconstruction TWI659643B|2019-05-11|於視訊寫碼中平行處理之指示 US8218641B2|2012-07-10|Picture encoding using same-picture reference for pixel reconstruction JP2017099017A|2017-06-01|画像復号化装置、画像符号化装置、画像復号化方法、画像符号化方法、プログラムおよび集積回路 CA2760425A1|2012-06-01|Method and system for parallel encoding of a video KR20150057790A|2015-05-28|웨이브-프런트 어프로치에 기초한 비디오 프레임의 병렬 처리 방법 US20100246679A1|2010-09-30|Video decoding in a symmetric multiprocessor system US20160191922A1|2016-06-30|Mixed-level multi-core parallel video decoding system US10158869B2|2018-12-18|Parallel video decoding processing apparatus and operating method thereof Kim et al.2010|H. 264 decoder on embedded dual core with dynamically load-balanced functional paritioning Kim et al.2008|H. 264/AVC decoder parallelization and optimization on asymetric multicore platform using dynamic load balancing KR20090020460A|2009-02-26|비디오 디코딩 방법 및 장치 KR102273670B1|2021-07-05|움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법 JPWO2015145504A1|2017-04-13|画像復号装置、画像復号方法、及び集積回路 Chen et al.2012|A novel parallel h. 264 decoder using dynamic load balance on dual core embedded system KR102171119B1|2020-10-28|복수개의 블록 기반의 파이프라인을 이용한 데이터 처리 속도 개선 장치 및 그 동작 방법 US10951900B2|2021-03-16|Speeding up small block intra-prediction in video coding Baaklini et al.2015|Scalable row-based parallel H. 264 decoder on embedded multicore processors US10743009B2|2020-08-11|Image processing apparatus and image processing method Han et al.2021|A Real-time Ultra-High Definition Video Decoder of AVS3 on Heterogeneous Systems US10075722B1|2018-09-11|Multi-core video decoder system having at least one shared storage space accessed by different video decoder cores and related video decoding method
同族专利:
公开号 | 公开日 US9621908B2|2017-04-11| TWI512673B|2015-12-11| US20130058412A1|2013-03-07|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 CN105872567A|2016-05-31|2016-08-17|北京航空航天大学|一种面向dsp平台的ctu级hevc环路滤波方法|AU5632394A|1993-03-05|1994-09-08|Sony Corporation|Apparatus and method for reproducing a prediction-encoded video signal| CN1199471C|1997-11-28|2005-04-27|松下电器产业株式会社|提高了处理效率的图象声音处理装置| US6252917B1|1998-07-17|2001-06-26|Nortel Networks Limited|Statistically multiplexed turbo code decoder| JP4240283B2|2002-10-10|2009-03-18|ソニー株式会社|復号装置及び復号方法| US7263128B2|2002-11-13|2007-08-28|Sony Corporation|Triple-buffering method for overlapped motion compensation in a video decoder| US7533075B1|2003-09-11|2009-05-12|Emblaze Vcon Ltd|System and method for controlling one or more signal sequences characteristics| US7844967B2|2004-05-19|2010-11-30|Hewlett-Packard Development Company, L.P.|Method of allocating computing resources| US7613848B2|2006-06-13|2009-11-03|International Business Machines Corporation|Dynamic stabilization for a stream processing system| US8634470B2|2007-07-24|2014-01-21|Samsung Electronics Co., Ltd.|Multimedia decoding method and multimedia decoding apparatus based on multi-core processor|CN103106638A|2011-11-14|2013-05-15|辉达公司|用于实时图像处理的图形处理装置| US9241163B2|2013-03-15|2016-01-19|Intersil Americas LLC|VC-2 decoding using parallel decoding paths| US9854252B2|2013-05-20|2017-12-26|Texas Instruments Incorporated|Method and apparatus of HEVC de-blocking filter| US9612949B2|2013-06-13|2017-04-04|Arm Limited|Memory allocation in a multi-core processing system based on a threshold amount of memory| US9331943B2|2013-09-10|2016-05-03|Robin Systems, Inc.|Asynchronous scheduling informed by job characteristics and anticipatory provisioning of data for real-time, parallel processing| US9693071B1|2013-09-25|2017-06-27|Visualon, Inc.|Self-adaptive load balance optimization for multicore parallel processing of video data| KR102280170B1|2013-10-04|2021-07-21|삼성전자주식회사|프레임의 특성에 따라 부하를 분배하는 방법 및 장치| US20150117536A1|2013-10-30|2015-04-30|Nvidia Corporation|Video decoder techniques| CN104539972A|2014-12-08|2015-04-22|中安消技术有限公司|一种多核处理器中视频并行解码的控制方法和装置| US9755945B2|2015-04-01|2017-09-05|Verizon Digital Media Services Inc.|Stream publishing and distribution capacity testing| CN106412597A|2015-07-29|2017-02-15|飞思卡尔半导体公司|多核视频解码器中的工作负载均衡| CN106843925B|2016-12-16|2020-10-23|中国电子科技集团公司第三十研究所|一种运用于dsp的功能模块动态加载方法|
法律状态:
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US201161531183P| true| 2011-09-06|2011-09-06|| US13/602,193|US9621908B2|2011-09-06|2012-09-02|Dynamic load balancing for video decoding using multiple processors| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|